/*
 * @lc app=leetcode.cn id=461 lang=javascript
 *
 * [461] 汉明距离
 */

// @lc code=start
/**
 * @param {number} x
 * @param {number} y
 * @return {number}
 */
// var hammingDistance = function(x, y) {
//   let a = Math.max(x, y);
//   let num = 0;
//   // 大值的位数
//   while(a) {
//     a = (a / 2) | 0;
//     num++;
//   }

//   let ret = 0;
//   // 除2，比较余数
//   for (let i = 0; i <= num; i++) {
//     if(x % 2 !== y % 2) ret++;

//     x = (x / 2) | 0;
//     y = (y / 2) | 0;
//   }
//   return ret;
// };

var hammingDistance = function(x, y) {
  // 异或， 二进制每位相同取0， 不同取1;
  x = x ^ y;

  let ret = 0;
  while(x) {
    // 删除x二进制的最后一个1
    x = x & (x - 1);
    ret++;
  }
  return ret;
}
// @lc code=end